from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants ### - Verbal Quiz class VerbQuizPage(Page): # randomize content and order per person in models, # store all structures in template and if between them form_model = 'player' form_fields = ['submitted_answer'] timeout_seconds = 30 def is_displayed(self): return True def before_next_page(self): self.player.check_correct() self.player.get_next_question(self.player.participant.vars['next_role']) def vars_for_template(self): return dict( qtype = self.player.qtype, subtype = self.player.qsubtype, my_id=self.player.uid, my_score=self.participant.vars['score'], megaRound=self.session.vars['megaRound'] ) class PostQuizWaitPage(WaitPage): def after_all_players_arrive(self): self.subsession.production_function() #THIS IS THE END OF THE MEGA ROUND! self.session.vars['app2_initialised'] = False self.session.vars['app3_initialised'] = False self.subsession.migrate_to_session() self.subsession.back_up() def is_displayed(self): return self.round_number == Constants.num_rounds class VerbQuizResults(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): # player_in_all_rounds = self.player.in_all_rounds() new_score = self.player.update_score() player_matched = None if self.player.matchedPlayer == -1: player_matched = 0 elif self.player.matchedPlayer != -1: player_matched = 1 return dict( is_matched=player_matched, my_performance=self.player.performance, partner_performance = self.player.partner_performance, production=self.player.production, debt_repayment = self.player.debt_repayment, my_profit = self.player.revenue, my_id=self.player.uid, my_score=self.participant.vars['score'], megaRound=self.session.vars['megaRound'] #player_in_all_rounds=player_in_all_rounds, #questions_correct=sum([p.is_correct for p in player_in_all_rounds]), ) class PeriodPrimingPage(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): # player_in_all_rounds = self.player.in_all_rounds() prime_list = [] for p in self.subsession.get_players(): if p.uid == self.player.uid: continue player_matched = None if p.matchedPlayer == -1: player_matched = 0 elif p.matchedPlayer != -1: player_matched = 1 prime_list.append([p.uid, player_matched, p.revenue ]) return dict( prime_list = prime_list, my_id=self.player.uid, my_score=self.participant.vars['score'], megaRound=self.session.vars['megaRound'] #player_in_all_rounds=player_in_all_rounds, #questions_correct=sum([p.is_correct for p in player_in_all_rounds]), ) def before_next_page(self): pass ''' 5 easy questions, 5 mid-level qeustions, 5 hard questions question categories: antonyms/synonyms (vocab), text comprehension conversations/technical, sentence completion goal: 5min time / 20s per question ''' ### - Graphic Design Quiz class GraphQuizPage(Page): # randomize content and order per person in models, # store all structures in template and if between them pass ''' 3x5 out of the following: centered, color selection, color ordering, drawing, font recognition / serif select, guess hexcolor? question categories: antonyms/synonyms (vocab), text comprehension conversations/technical, sentence completion goal: 5min time / 20s per question ''' class App3LandingPage(Page): def before_next_page(self): self.subsession.on_app_start() def is_displayed(self): return self.round_number == 1 def vars_for_template(self): return dict( my_id=self.player.uid, my_score=self.participant.vars['score'], megaRound=self.session.vars['megaRound'] ) page_sequence = [ App3LandingPage, VerbQuizPage, PostQuizWaitPage, VerbQuizResults, PeriodPrimingPage ]